package com.heima.model.article.pojos;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * <p>
 * APP已发布文章配置表
 * </p>
 *
 * @author itheima
 */

@Data
@TableName("ap_article_config")
@NoArgsConstructor//生成无参构造函数
public class ApArticleConfig implements Serializable {

    //有参构造函数 //直接ApArticleConfig apArticleConfig = new ApArticleConfig(apArticle.getId());
    //就可以创建带有这些默认值的对象
    public ApArticleConfig(Long articleId) {//articleId需要传递过来
        this.articleId = articleId;
        this.isDelete = false;//默认没有删除
        this.isDown = false;//默认没有下架
        this.isForward = true;//默认可以转发
        this.isComment = true;//默认可以评论
    }

//      #雪花算法相关，mybatis-plus已经集成了雪花算法
//  #因为数据库表有容量限制，需要分表，
//            #如果数据库表采用的是ID自增策略，可能产生重复ID
//  #(使用雪花算法解决分布式id问题(缺点：机器规模大于1024台无法支持))
//            #所以应该使用分布式ID生成策略，想要微服务连接到多张分表，
//            #需要使用数据库中间件找到所有的表

    @TableId(value = "id",type = IdType.ID_WORKER)//ID_WORKER 雪花算法
    private Long id;

    /**
     * 文章id
     */
    @TableField("article_id")
    private Long articleId;

    /**
     * 是否可评论
     * true: 可以评论   1
     * false: 不可评论  0
     */
    @TableField("is_comment")
    private Boolean isComment;

    /**
     * 是否转发
     * true: 可以转发   1
     * false: 不可转发  0
     */
    @TableField("is_forward")
    private Boolean isForward;

    /**
     * 是否下架
     * true: 下架   1
     * false: 没有下架  0
     */
    @TableField("is_down")
    private Boolean isDown;

    /**
     * 是否已删除
     * true: 删除   1
     * false: 没有删除  0
     */
    @TableField("is_delete")
    private Boolean isDelete;
}
